package homework;

import upload.StreamUtils;

import java.io.*;
import java.net.ServerSocket;
import java.net.Socket;

/**
 * @author DCSGO
 * @version 1.0
 * (2)客户端可以输入一个音乐文件名，比如高山流水,服务端收到音乐名后，可以给客户端返回这个音乐文件，
 *    如果服务器没有这个文件，返回一个默认的音乐即可
 * (3)客户端收到文件后，保存到本地 E:\dest
 * (4)提示:该程序可以使用StreamUtils.java
 */
public class Homework03Server {
    public static void main(String[] args) throws Exception {
        ServerSocket ss = new ServerSocket(9999);
        System.out.println("等待主机连接...");
        Socket accept = ss.accept();

        //读取客户端需要下在的音乐名
        byte[] tmp = new byte[1024];
        int readLen = new BufferedInputStream(accept.getInputStream()).read(tmp);
        String musicName = new String(tmp, 0, readLen);

        System.out.println("主机需要下载：" + musicName);

        //判断文件是否存在
        String parentFilePath = "D:\\src\\music";
        String defaultMusic = "在你的身边.mp3";
        File music = new File(parentFilePath, musicName);
        File retMusic = new File(parentFilePath, defaultMusic);
        if (music.exists()) {
            retMusic = music;
        }

        if (retMusic.getName().equals(defaultMusic)) {
            System.out.println("没有该音乐，已为 " + accept.getInetAddress().getHostName() + "提供默认音乐！");
        } else {
            System.out.println("已为 " + accept.getInetAddress().getHostName() + " 提供指定音乐！");
        }

        byte[] retData = StreamUtils.streamToByteArray(new FileInputStream(retMusic));
        BufferedOutputStream bos = new BufferedOutputStream(accept.getOutputStream());
        bos.write(retData);
        bos.flush();
        accept.shutdownOutput();

        bos.close();
        accept.close();
        ss.close();

        /*
         * 等待主机连接...
         * 主机需要下载：英雄联盟,Marshmello - Flash Funk (Marshmello Remix).mp3
         * 已为 DCSGO 提供指定音乐！
         *
         * 进程已结束，退出代码为 0
         */
    }
}
